package pl.edu.pw.elka.tinyrepo.common;

import com.thoughtworks.xstream.XStream;

/**
 * 
 * Serializacja i deserializacja obiektow typu CatalogContent do i z formatu XML
 * Uzywany przez Gate i (prawdopodobnie) przez klienta.
 * Wrapper na XStream
 * 
 * @author kajot
 *
 */

public class CatalogContentSerializer {
	
	private XStream xstream;

	public CatalogContentSerializer() {
		xstream = new XStream();
		xstream.alias("CatalogContent", FileProperties.class);
	}
	
	/**
	 * Serializuje zawartosc katalogu (CatalogContent) do XMLa
	 * 
	 * @param properties - obiekt do serializacji
	 * @return zserializowany obiekt w postaci XMLa
	 */
	
	public String toXML(CatalogContent catalogContent) {
		return xstream.toXML(catalogContent);
	}
	
	/**
	 * Deserializuje zawartosc katalogu z formatu XML do obiektu klasy CatalogContent
	 * @param xml - zserializowany obiekt CatalogContent
	 * @return zdeserializowany obiekt CatalogContent
	 */
	
	public CatalogContent fromXML(String xml) {
		return (CatalogContent) xstream.fromXML(xml);
	}
	
}